#ifndef __SUBSYSTEM_NOISE_H__
#define __SUBSYSTEM_NOISE_H__

#include "AStar/AStarVector3.h"
#include "Subsystems/Subsystem.hpp"

namespace PocketSurvival
{
    struct ComponentBody;
    class SubsystemBodies;

    class SubsystemNoise : public Subsystem
    {
    protected:
        SubsystemBodies *subsystemBodies;

    public:
        void makeNoise(const Vector3& position, float loudness, float range);
        void makeNoise(ComponentBody *sourceBody, float loudness, float range);

        void makeNoisePublic(entt::entity sourceEntity, const Vector3& position, float loudness, float range);

        virtual const std::string &getName() const override;
        virtual void load(const nlohmann::json &json) override;
    };

} // namespace PocketSurvival

#endif
